Memory devices are commonly used to store data either temporarily or permanently in a number of applications; for example, in a non-volatile memory device, the data is preserved even when a memory device power supply is off.
Flash memory devices are non-volatile memories wherein each single memory cell may be programmed electrically, but a large number of memory cells, forming a memory block, are erased at the same time. Typically, each memory cell consists of a floating-gate MOS transistor, which stores a logic value defined by its threshold voltage (which depends on the electric charge stored on the floating gate).
In particular, during the programming of the floating-gate MOS transistor, electrons are injected, for example, by means of the known Fowler-Nordheim mechanism, into the floating gate; the retention of such electrons by the floating gate causes the memory device non-volatility. Vice versa, during the erasing, the floating gate is substantially emptied of the electrons, which were injected during the programming.
In a flash memory device with NAND architecture, the memory cells are grouped in strings (or stacks), each one consisting of a set of memory cells that are connected in series between a drain select transistor, connected to a bit line of the memory cells block, and a source select transistor, connected to a reference voltage distribution line distributing a reference voltage (such as a ground voltage); groups of said strings of memory cells are connected to a same bit line, and thus they are connected in parallel to each other. When all the memory cells belonging to a same string are to be programmed, usually the first memory cell that undergoes the programming operation is the memory cell connected to the source select transistor of the string, followed by the subsequent memory cells of the string proceeding towards the memory cell connected to the drain select transistor.
As known, for programming a memory cell belonging to the selected string, a significantly high programming voltage (such as 18V) is applied to its control gate, while control gates of the remaining memory cells of the string are driven by a programming pass voltage, typically lower (such as, 9 or 10V) than the programming voltage, but sufficient to turn them on. The bit line corresponding to the selected string is biased at a voltage that depends on the data to be programmed into the considered memory cell: if the data to be programmed is a “0” (by convention, corresponding to a memory cell with a positive threshold voltage), the bit line is biased at the reference voltage (such as 0V); if instead the memory cell is intended to store a “1” (which, by convention, corresponds to an erased memory cell, with a negative threshold voltage; thus, when the data to be stored is a “1”, the corresponding memory cell is left in the original state), the bit line is biased at a higher voltage, such as the memory device supply voltage (e.g., 3V). The other bit lines of the memory matrix are brought to the supply voltage. The control terminal of the drain select transistor corresponding to the selected string is driven by the supply voltage, thus in case the data to be programmed is a “0” the drain select transistor is turned on, whereas in case the memory cell is intended to store a “1” the drain select transistor is kept off. The source select transistor receives at its control terminal the reference voltage, thus resulting in the select transistor being turned off.
In detail, when a logic value equal to “0” is to be stored into the selected memory cell, the threshold voltage thereof is shifted towards higher values compared to the erased state (that corresponds to a logic “1”). For this purpose, electrons are to be injected into the floating gate; a relatively high voltage difference (“programming voltage”) between the control gate and the drain terminal of the selected memory cell is applied. In particular, the drain terminal of the selected memory cell is kept at the reference voltage, since the remaining non-selected memory cells of the string are turned on so as to transfer the reference voltage (i.e., 0V) from the bit line to the drain of the memory cell; the control gate voltage applied to the unselected memory cells of the string is not excessively high, so as to inhibit charge injection into the floating gates thereof.
When the data to be stored into the selected memory cell is a logic value equal to “1”, its threshold voltage remains unchanged (under the assumption that the memory cell starts from an erased state). For this purpose, the voltage difference between the control gate and the drain terminal of the selected memory cell is kept lower than the programming voltage, so as to be insufficient for causing a charge injection into the floating gate thereof. All the memory cells in the string are on, and, the drain select transistor being off, the voltage of the drain terminal of the selected memory cell is boosted toward relatively high values (such as, 7V) thanks to the capacitive coupling effect between the selected memory cell and the remaining memory cells of the string.
A function of the memory devices is to ensure that the memory cells are correctly programmed. Indeed, when one (or more) memory cells of the memory device are programmed, corruption of the data stored into the remaining memory cells may occur due to effects like an unexpected and undesired charge injection into the floating gates thereof. Such an event may cause the threshold voltages of the memory cells to take values that are different (higher or lower) than the expected values.
These spurious changes of the memory cells' threshold voltages may cause errors when the data is read. Such effect, which is also experienced in NAND memories with two-level memory cells, is more and more of a problem in multi-level NAND memories, wherein each cell stores multiple bits, corresponding to multiple different threshold voltage levels; in this case in fact the margins which are available for discriminating the different stored logic values are reduced.
For better clarity, let the case be considered of a programming operation performed on a memory cell belonging to a selected string of a NAND flash memory device. Let it be assumed that the memory cell to be programmed is the second (starting from the source select transistor) memory cell in the string, whereas the first memory cell has already been programmed. As mentioned above, during the program operation, the control gate of the first memory cell—the one which is directly connected to the source select transistor—is driven by the programming pass voltage, whereas the control gate of the second memory cell is driven by the programming voltage.
The voltage of the drain terminals of the memory cells belonging to the unselected string is boosted toward relatively high values (such as, 7V). In particular, the drain terminal of the first memory cell belonging to the unselected string is boosted to said relatively high values (such as, 7V) thanks to the capacitive coupling effect with the remaining memory cells of the string. The voltage difference between the programming pass voltage and the voltage (i.e., the reference voltage) applied to the control electrode of the source select transistor may cause an undesired charge injection (so-called “Source/drain Hot-Carrier Injection Disturbance”, or SDHCID for short) into the floating gate of the first memory cell of the unselected string, which may vary its threshold voltage. In particular, electron-hole pairs may be generated at the source select transistor and the generated electrons are accelerated towards the floating gate of the (first) memory cell belonging to the unselected string so causing an undesired programming thereof. This phenomenon is more apt to occur the higher the difference between the programming pass voltage and the voltage (i.e., the reference voltage) applied to the control electrode of the source select transistor; in particular, such phenomenon is more apt to occur the higher the transversal electric field between the source select transistor and the unselected memory cells.
Similar problems are encountered when the string includes memory cells which are intended to store a logic value equal to “1” and in particular when the first memory cell of the string is to be left in the erased state. Indeed, also in this case the transversal electric field between the source select transistor and the first memory cell (with the voltage of the drain terminal boosted to a high value) may cause an undesired programming thereof.
In other words, the “SDHCID” affects the threshold voltage of the first memory cells belonging to memory cell strings, which are not selected for the programming operation (meaning both unselected strings and selected strings but containing memory cells that are to left in the “1” state). Indeed, the voltage difference between the programming pass voltage applied to the control gate of the first memory cell of the string and the voltage (i.e., the reference voltage) applied to the control electrode of the source select transistor may cause an undesired charge injection into the floating gate of the first memory cell of each string of the block.
It should be noted that in bi-level memory devices such problem is particularly detrimental when the first memory cell of the string is intended to store a data corresponding to the “1”, since even a small charge injection may cause a shift of the threshold voltage towards the programmed state such that the first memory cell, during the reading operation, is non-conductive (i.e., programmed to “0” logic value) instead of conductive (i.e., erased to “1” logic value).
In multi-level memory devices the “SDHCID” is particularly felt also when the data to be stored into the first memory cell belonging to the string, which is not selected for the programming, corresponds to a programmed state. In fact, the undesired charge injection may cause a shift of the threshold voltage of the first memory cell toward threshold voltage levels corresponding to a (programmed) state different from the desired one.
Similar considerations also apply when the program operation is performed on the other memory cells of the selected string.